/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ucab.desarrollo.viajesbook.persistencia;
import java.util.List;
import org.hibernate.Session;
import ucab.desarrollo.viajesbook.beans.Viaje;

/**
 *
 * @author Ju4nC4rlos
 */
public class ViajeDAO extends  AbstractHibernateDAO<Viaje, Integer> implements IViajeDAO
{

        /**
     * devuelve el tipo de objeto de dominio
     *
     *
     * @return Viaje.class
     */
    @Override
    protected Class<Viaje> getDomainClass() {
        return Viaje.class;
    }

    /**
    * metodo que crea un viaje
    * @param viaje
    */
    @Override
    public void salvar(Viaje viaje) {
    //    getHibernateTemplate().save(object);
        super.salvar(viaje);

    }
    /**
     *metodo que devuelve todos los viajes de un usuario basado en su id
     */
    public List devolverViajesdeUsuario(Integer id) {
        Session sesion = getSession();
        String consulta = "SELECT new list (l.lugarNombre as destino,v.viajeFechaInicio as inicio,v.viajeFechaFin as fin,v.viajealojamiento as hospedaje,v.viajeppublico as publico,v.idviaje as id) FROM Lugar as l,Viaje as v where l.idlugar=v.lugar and v.usuario="+id;
        return (List)sesion.createQuery(consulta).list();

    }

    public List devolverListaDePaises()
    {
        Session sesion = getSession();
        String consulta = "SELECT new list(con.name as nombre, con.code as codigo)  from Country con ";       
        return (List)sesion.createQuery(consulta).list();
    }

    public List devolverListaDeCiudadesPorPais(String selectKey)
    {
        Session sesion = getSession();
        String consulta = "SELECT new list(ciudad.name as nombre, ciudad.id as codigo) from City ciudad where ciudad.country='" + selectKey + "'";
        return (List)sesion.createQuery(consulta).list();
    }

}
